package algo3.g203.modelo.armas;

import algo3.g203.modelo.armas.explosiones.ExplosionBehavior;
import algo3.g203.modelo.armas.explosiones.ExplosionPuntual;
import algo3.g203.modelo.fisica.Posicion;
import algo3.g203.modelo.naves.Nave;

public class MinaPorContacto extends Arma{

	private final int COSTO_DEL_ARMA = 150;
	
	private EspacioNaves espacionaves;
	
	public MinaPorContacto(Posicion p, EspacioNaves e) {
		super(p);
		this.espacionaves = e;
	}
	
	@Override
	public int getCosto() {
		return this.COSTO_DEL_ARMA;
	}

	/**
	* Explota si al comenzar el turno hay una seccion de barco no destruida en su posicion
	*/
	@Override
	public boolean comenzarTurno() {
		if (this.espacionaves.existeSeccionDeNaveNoDestruidaEn(this.posicion)) {
			for (ObservadorDeArma o : this.listaObservadores)
				o.notificarArmaDebeEstallar(this);
			return true;
		}
		return false;
	}

	@Override
	public void daniar(Nave n) {
		n.recibirDisparo(this);	
	}

	@Override
	protected ExplosionBehavior getExplosionBehavior() {
		return new ExplosionPuntual();
	}
	
}
